package com.wanwu.channel.common.util;

/**
 * @author zhy
 * @date 2020-1-2
 * @descrption 分库分表信息计算工具类
 */
public class ShardUtil {

    /**
     * 根据交易日期获得分库信息，虽然当前db数量是2，但为了之后扩容，进行了分库信息冗余，所以 mod 64
     */
    public static String getDBInfoByDate(long time) {
        String num = String.valueOf((time / 16) % 64 + 1);
        // 如果是个位数，前面补0
        return num.length() == 2 ? num : "0" + num;
    }

    /**
     * 根据交易日期获得分表信息
     */
    public static String getTableInfoByDate(long time) {
        String num=String.valueOf(time % 16);
        return num.length() == 2 ? num : "0" + num;
    }

    /**
     * 根据订单id获得分库信息
     */
    public static String getDBInfoByOrderId(String orderId) {
        return orderId.substring(0, 2);
    }

    /**
     * 根据订单id获得分表信息
     */
    public static String getTableInfoByOrderId(String orderId) {
        return orderId.substring(2,4);
    }

}
